package com.biosimilarity.reflection.model.paratrope;
import com.biosimilarity.reflection.model.paratrope.Absyn.*;
/** BNFC-Generated Abstract Visitor */
public class AbstractVisitor<R,A> implements AllVisitor<R,A> {
/* ProcessExpr */
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Composition p, A arg) { return visitDefault(p, arg); }

    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Reception p, A arg) { return visitDefault(p, arg); }
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Transmission p, A arg) { return visitDefault(p, arg); }
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Transcription p, A arg) { return visitDefault(p, arg); }
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Termination p, A arg) { return visitDefault(p, arg); }

    public R visitDefault(com.biosimilarity.reflection.model.paratrope.Absyn.ProcessExpr p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Abstraction */
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Suspension p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(com.biosimilarity.reflection.model.paratrope.Absyn.Abstraction p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Concretion */
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Provision p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(com.biosimilarity.reflection.model.paratrope.Absyn.Concretion p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Nominal */
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.AtomLiteral p, A arg) { return visitDefault(p, arg); }
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Encoding p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(com.biosimilarity.reflection.model.paratrope.Absyn.Nominal p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Formals */
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Obligation p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(com.biosimilarity.reflection.model.paratrope.Absyn.Formals p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Actuals */
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Remittance p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(com.biosimilarity.reflection.model.paratrope.Absyn.Actuals p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* ProcessExprPlus */
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Value p, A arg) { return visitDefault(p, arg); }
    public R visit(com.biosimilarity.reflection.model.paratrope.Absyn.Variable p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(com.biosimilarity.reflection.model.paratrope.Absyn.ProcessExprPlus p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }

}
